Embodiments relate generally to computer memory, and more particularly to memory page management in a tiered memory system.
Historically, computer memory systems have been made up of memory pages that have architecturally homogenous characteristics such as reference latency, bandwidth, reliability, power, granularity, cost, and density. However, memory cost, density, and capacity demands have some recent systems integrating new architectures and technologies with conventional memory that lead to portions of the memory system having quite disparate operating characteristics and thus different operating costs (e.g., price per bit, power costs, latency costs, etc.). For example, compressed data regions or regions constructed with flash memory technology tend to have much longer access latency than conventional dynamic random access memory (DRAM) based main memory. One drawback to the use of memory with non-homogenous characteristics is that it is not always possible to predict application usage patterns in order to determine optimal storage locations for data. In addition, contemporary operating systems do not optimize storage locations in memory with non-homogenous characteristics during system initialization or while the system is operational. Storing data in a less than optimal location can result in poor runtime performance and quality of service issues.
Accordingly, and while existing memory systems may be suitable for their intended purpose, there remains a need in the art for memory systems that overcome these drawbacks.